<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js执行机制</title>
</head>

<body>
    <script>
        // 进程: 是计算机中的程序关于某数据集合上的一次运行活动
        // 是系统进行资源分配和调度的基本单元

        // 多进程:启动多个进程,多个进程可以一块来执行多个任务

        // 单线程:进程内一个相对独立的,可调度的执行单元,在同属一个进程共享着进程中的资源
        // (同一时间,只能做一件事情)

        // 多线程:启动一个进程,在一个进程内部启动多个线程,
        // 这样,多个线程可以一块执行多个任务;
        // (也是通过调度来做,如同多进程能做多任务一样,多线程也能做多任务)

        // 工厂的资源   系统分配的内存(独立的一块内存)
        // 工厂之间的相互独立  进程之间相互独立
        // 多个工人协作完成任务 多个线程在进程中协作完成任务
        //  工厂内有一个或多个工人   一个进程由一个或多个线程组成

        // 浏览器是多进程的
        // browser进程,第三方插件进程,GPU进程,浏览器渲染引擎进程(浏览器内核)

        // 浏览器渲染引擎进程是多线程的:
        // 1.js引擎线程(单线程)DOM冲突
        // js设计之初就是为了用户交互,用户交互就会操作dom.如果多线程操作同一dom,就会造成dom冲突
        // 2.GUI线程(与js引擎线程互斥) 绘制用户界面
        // 以下三个被称为webAPIs
        // 3.http网络请求线程
        // 4.定时器触发线程
        // 5.浏览器事件处理线程

        // 数据量大怎么办
        // SSR服务端渲染技术
        // webworker HTML5中新增的api  js引擎线程的一个子线程,不能操作dom,webworker引入是为了数据的大量的计算

        // js的运行原理: js引擎线程(单线程),同时执行异步执行的; (事件驱动)
        // 异步:在计算机中,同一时间执行多件事情
        // 在js中通过事件驱动模拟异步,这里的事件驱动是基于js的运行环境不同,会有不同

        //  js执行代码都会进入执行栈中
        // EventTable可以理解为webAPIs
        // EventQueeue 事件队列
        // event loop 事件轮询
        // 所有的异步代码都是以回调的方式存在的
        // 回调函数就是参数以方法的形式存在的 

        // setTimeout(fu,0)最小延迟是4ms  HTML5规范
        //30毫秒
        // https://segmentfault.com/a/1190000017419328
    </script>
</body>

</html>